home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / bpp / no1 / pi.bas < prev    next >
BASIC Source File  |  1994-01-07  |  6KB  |  168 lines

  1. 10 ' [ BPP PASS 3 ]
  2. 20 ' [ BPP PASS 2 ]
  3. 30 ' [ BPP PASS 1 ]
  4. 40 '#1
  5. 50 '#2
  6. 60 '#3
  7. 70 '#4
  8. 80 '#5
  9. 90 '#6
  10. 100 '#DEFINE SCALE 320 #7
  11. 110 '#8
  12. 120 CLEAR ,,4096'#9
  13. 130 '#10
  14. 140 '[ STACK FRAME ]'#11
  15. 150 DIM ZZZSTK!(0)
  16. 160 ZZZSPT%(0)=0
  17. 170 DIM ZZZSTK#(1024)
  18. 180 ZZZSPT%(1)=0
  19. 190 DIM ZZZSTK$(0)
  20. 200 ZZZSPT%(2)=0
  21. 210 DIM ZZZSTK%(1024)
  22. 220 ZZZSPT%(3)=0
  23. 230 '#12
  24. 240 GOSUB *MAIN'#13
  25. 250 END'#14
  26. 260 '#15
  27. 270 *SQUARE'#17
  28. 280 ZZZSPT%(1)=ZZZSPT%(1)+3
  29. 290 ZZZSPT%(3)=ZZZSPT%(3)+5
  30. 300 ZZZSTK%(ZZZSPT%(3)+-4)=ZZZSTK#(ZZZSPT%(1)+-3)*320
  31. 310 ZZZSTK%(ZZZSPT%(3)+-3)=ZZZSTK#(ZZZSPT%(1)+-2)*320
  32. 320 ZZZSTK%(ZZZSPT%(3)+-2)=(ZZZSTK#(ZZZSPT%(1)+-3)+ZZZSTK#(ZZZSPT%(1)+-1))*320
  33. 330 ZZZSTK%(ZZZSPT%(3)+-1)=(ZZZSTK#(ZZZSPT%(1)+-2)+ZZZSTK#(ZZZSPT%(1)+-1))*320
  34. 340 IF (ZZZSTK%(ZZZSPT%(3)+-5) )=0 THEN *ZZZ1'#22
  35. 350 ZZZSTK%(ZZZSPT%(3)+0)=ZZZSTK%(ZZZSPT%(3)+-4)'#23
  36. 360 ZZZSTK%(ZZZSPT%(3)+1)=ZZZSTK%(ZZZSPT%(3)+-3)
  37. 370 ZZZSTK%(ZZZSPT%(3)+2)=ZZZSTK%(ZZZSPT%(3)+-2)
  38. 380 ZZZSTK%(ZZZSPT%(3)+3)=ZZZSTK%(ZZZSPT%(3)+-1)
  39. 390 GOSUB *BOXFILL
  40. 400 GOTO *ZZZ2'#24
  41. 410 *ZZZ1
  42. 420 ZZZSTK%(ZZZSPT%(3)+0)=ZZZSTK%(ZZZSPT%(3)+-4)'#25
  43. 430 ZZZSTK%(ZZZSPT%(3)+1)=ZZZSTK%(ZZZSPT%(3)+-3)
  44. 440 ZZZSTK%(ZZZSPT%(3)+2)=ZZZSTK%(ZZZSPT%(3)+-2)
  45. 450 ZZZSTK%(ZZZSPT%(3)+3)=ZZZSTK%(ZZZSPT%(3)+-1)
  46. 460 GOSUB *BOX
  47. 470 *ZZZ2'#26
  48. 480 *ZZZ0'#27
  49. 490 ZZZSPT%(1)=ZZZSPT%(1)-3
  50. 500 ZZZSPT%(3)=ZZZSPT%(3)-5
  51. 510 RETURN
  52. 520 '#28
  53. 530 *AREA'#31
  54. 540 ZZZSPT%(1)=ZZZSPT%(1)+8
  55. 550 IF (ZZZSTK#(ZZZSPT%(1)+-7)^2+ZZZSTK#(ZZZSPT%(1)+-6)^2>1.0 )=0 THEN *ZZZ4
  56. 560 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-7)'#32
  57. 570 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-6)
  58. 580 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-5)
  59. 590 ZZZSTK%(ZZZSPT%(3)+0)=0
  60. 600 GOSUB *SQUARE
  61. 610 ZZZSTK#(ZZZSPT%(1)+-8)=0.0'#33
  62. 620 GOTO *ZZZ3'#34
  63. 630 GOTO *ZZZ5'#35
  64. 640 *ZZZ4
  65. 650 IF ((ZZZSTK#(ZZZSPT%(1)+-7)+ZZZSTK#(ZZZSPT%(1)+-5))^2+(ZZZSTK#(ZZZSPT%(1)+-6)+ZZZSTK#(ZZZSPT%(1)+-5))^2<1.0 )=0 THEN *ZZZ6
  66. 660 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-7)'#36
  67. 670 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-6)
  68. 680 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-5)
  69. 690 ZZZSTK%(ZZZSPT%(3)+0)=1
  70. 700 GOSUB *SQUARE
  71. 710 ZZZSTK#(ZZZSPT%(1)+-8)=ZZZSTK#(ZZZSPT%(1)+-5)^2'#37
  72. 720 GOTO *ZZZ3'#38
  73. 730 GOTO *ZZZ5'#39
  74. 740 *ZZZ6
  75. 750 IF (ZZZSTK#(ZZZSPT%(1)+-5)<=EPS )=0 THEN *ZZZ7
  76. 760 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-7)'#40
  77. 770 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-6)
  78. 780 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-5)
  79. 790 ZZZSTK%(ZZZSPT%(3)+0)=0
  80. 800 GOSUB *SQUARE
  81. 810 ZZZSTK#(ZZZSPT%(1)+-8)=ZZZSTK#(ZZZSPT%(1)+-5)^2*0.5'#41
  82. 820 GOTO *ZZZ3'#42
  83. 830 GOTO *ZZZ5'#43
  84. 840 *ZZZ7
  85. 850 ZZZSTK#(ZZZSPT%(1)+-5)=ZZZSTK#(ZZZSPT%(1)+-5)*0.5'#44
  86. 860 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-4)'#45
  87. 870 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-7)
  88. 880 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-6)
  89. 890 ZZZSTK#(ZZZSPT%(1)+3)=ZZZSTK#(ZZZSPT%(1)+-5)
  90. 900 ZZZSTK#(ZZZSPT%(1)+-4)=ZZZSTK#(ZZZSPT%(1)+0)
  91. 910 GOSUB *AREA
  92. 920 ZZZSTK#(ZZZSPT%(1)+-4)=ZZZSTK#(ZZZSPT%(1)+0)
  93. 930 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-3)'#46
  94. 940 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-7)
  95. 950 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-6)+ZZZSTK#(ZZZSPT%(1)+-5)
  96. 960 ZZZSTK#(ZZZSPT%(1)+3)=ZZZSTK#(ZZZSPT%(1)+-5)
  97. 970 ZZZSTK#(ZZZSPT%(1)+-3)=ZZZSTK#(ZZZSPT%(1)+0)
  98. 980 GOSUB *AREA
  99. 990 ZZZSTK#(ZZZSPT%(1)+-3)=ZZZSTK#(ZZZSPT%(1)+0)
  100. 1000 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-2)'#47
  101. 1010 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-7)+ZZZSTK#(ZZZSPT%(1)+-5)
  102. 1020 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-6)
  103. 1030 ZZZSTK#(ZZZSPT%(1)+3)=ZZZSTK#(ZZZSPT%(1)+-5)
  104. 1040 ZZZSTK#(ZZZSPT%(1)+-2)=ZZZSTK#(ZZZSPT%(1)+0)
  105. 1050 GOSUB *AREA
  106. 1060 ZZZSTK#(ZZZSPT%(1)+-2)=ZZZSTK#(ZZZSPT%(1)+0)
  107. 1070 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-1)'#48
  108. 1080 ZZZSTK#(ZZZSPT%(1)+1)=ZZZSTK#(ZZZSPT%(1)+-7)+ZZZSTK#(ZZZSPT%(1)+-5)
  109. 1090 ZZZSTK#(ZZZSPT%(1)+2)=ZZZSTK#(ZZZSPT%(1)+-6)+ZZZSTK#(ZZZSPT%(1)+-5)
  110. 1100 ZZZSTK#(ZZZSPT%(1)+3)=ZZZSTK#(ZZZSPT%(1)+-5)
  111. 1110 ZZZSTK#(ZZZSPT%(1)+-1)=ZZZSTK#(ZZZSPT%(1)+0)
  112. 1120 GOSUB *AREA
  113. 1130 ZZZSTK#(ZZZSPT%(1)+-1)=ZZZSTK#(ZZZSPT%(1)+0)
  114. 1140 ZZZSTK#(ZZZSPT%(1)+-8)=ZZZSTK#(ZZZSPT%(1)+-4)+ZZZSTK#(ZZZSPT%(1)+-3)+ZZZSTK#(ZZZSPT%(1)+-2)+ZZZSTK#(ZZZSPT%(1)+-1)'#49
  115. 1150 GOTO *ZZZ3'#50
  116. 1160 *ZZZ5'#51
  117. 1170 *ZZZ3'#52
  118. 1180 ZZZSPT%(1)=ZZZSPT%(1)-8
  119. 1190 RETURN
  120. 1200 '#53
  121. 1210 *MAIN'#56
  122. 1220 ZZZSPT%(1)=ZZZSPT%(1)+1
  123. 1230 INPUT "許容誤差 " ;EPS
  124. 1240 GOSUB *INITGRAPH'#57
  125. 1250 ZZZSTK%(ZZZSPT%(3)+0)=0'#58
  126. 1260 ZZZSTK%(ZZZSPT%(3)+1)=0
  127. 1270 ZZZSTK%(ZZZSPT%(3)+2)=320
  128. 1280 GOSUB *CIRCLEEDGE
  129. 1290 ZZZSTK#(ZZZSPT%(1)+0)=ZZZSTK#(ZZZSPT%(1)+-1)'#59
  130. 1300 ZZZSTK#(ZZZSPT%(1)+1)=0
  131. 1310 ZZZSTK#(ZZZSPT%(1)+2)=0
  132. 1320 ZZZSTK#(ZZZSPT%(1)+3)=1.0
  133. 1330 ZZZSTK#(ZZZSPT%(1)+-1)=ZZZSTK#(ZZZSPT%(1)+0)
  134. 1340 GOSUB *AREA
  135. 1350 ZZZSTK#(ZZZSPT%(1)+-1)=ZZZSTK#(ZZZSPT%(1)+0)
  136. 1360 ZZZSTK#(ZZZSPT%(1)+-1)=ZZZSTK#(ZZZSPT%(1)+-1)*4'#60
  137. 1370 PRINT "π=" ;ZZZSTK#(ZZZSPT%(1)+-1)'#61
  138. 1380 *ZZZ8'#62
  139. 1390 ZZZSPT%(1)=ZZZSPT%(1)-1
  140. 1400 RETURN
  141. 1410 '#63
  142. 1420 *INITGRAPH'#65
  143. 1430 CLS
  144. 1440 *ZZZ9'#66
  145. 1450 RETURN
  146. 1460 '#67
  147. 1470 *BOX'#69
  148. 1480 ZZZSPT%(3)=ZZZSPT%(3)+4
  149. 1490 LINE(ZZZSTK%(ZZZSPT%(3)+-4),ZZZSTK%(ZZZSPT%(3)+-3))-(ZZZSTK%(ZZZSPT%(3)+-2),ZZZSTK%(ZZZSPT%(3)+-1)),PSET,7,B
  150. 1500 *ZZZ10'#70
  151. 1510 ZZZSPT%(3)=ZZZSPT%(3)-4
  152. 1520 RETURN
  153. 1530 '#71
  154. 1540 *BOXFILL'#73
  155. 1550 ZZZSPT%(3)=ZZZSPT%(3)+4
  156. 1560 LINE(ZZZSTK%(ZZZSPT%(3)+-4),ZZZSTK%(ZZZSPT%(3)+-3))-(ZZZSTK%(ZZZSPT%(3)+-2),ZZZSTK%(ZZZSPT%(3)+-1)),PSET,1,BF
  157. 1570 LINE(ZZZSTK%(ZZZSPT%(3)+-4),ZZZSTK%(ZZZSPT%(3)+-3))-(ZZZSTK%(ZZZSPT%(3)+-2),ZZZSTK%(ZZZSPT%(3)+-1)),PSET,7,B'#74
  158. 1580 *ZZZ11'#75
  159. 1590 ZZZSPT%(3)=ZZZSPT%(3)-4
  160. 1600 RETURN
  161. 1610 '#76
  162. 1620 *CIRCLEEDGE'#78
  163. 1630 ZZZSPT%(3)=ZZZSPT%(3)+3
  164. 1640 CIRCLE(ZZZSTK%(ZZZSPT%(3)+-3),ZZZSTK%(ZZZSPT%(3)+-2)),ZZZSTK%(ZZZSPT%(3)+-1)
  165. 1650 *ZZZ12'#79
  166. 1660 ZZZSPT%(3)=ZZZSPT%(3)-3
  167. 1670 RETURN
  168.